home *** CD-ROM | disk | FTP | other *** search
/ Almathera Ten Pack 3: CDPD 3 / Almathera Ten on Ten - Disc 3: CDPD3.iso / fish / 726-750 / 745 / bbbbs / bbbbs55.lzh / rexxDoors / Grin_du_Jour.rexx next >
OS/2 REXX Batch file  |  1991-12-05  |  2KB  |  58 lines

  1. /*
  2.      $VER: 1.1  Grin_du_Jour.rexx  29 June 1991  (29.6.91)
  3.             copyright 1991 Richard Lee Stockton
  4.                   FREELY DISTRIBUTABLE
  5.  
  6. This will manage grin (cookie, fortune, etc.) files up to about 12 MEG
  7.  
  8. */
  9.  
  10. FF='0C'x  /* FormFeed */
  11. CR='0D'x  /* Carraige Return */
  12. SIGNAL ON BREAK_C
  13. SIGNAL ON BREAK_E
  14.  
  15. ARG name .
  16.  
  17. bbspath=GETCLIP('BBS_path')
  18. filename=bbspath'rexxDoors/Data/Grins' /* Formfeed separated text */
  19. size=WORD(STATEF(filename),2)
  20. fragment=size/3000
  21.  
  22. x=OPEN(f,'RAM:DUMMY','W')                /* write to a dummy file */
  23. IF x=0 THEN EXIT(20);
  24. CALL WRITELN(f,'dummy')
  25. CALL CLOSE(f)
  26. micros=WORD(STATEF('RAM:DUMMY'),7)        /*  0 >= micros < 3000  */
  27. location=fragment*micros
  28. IF fragment>1000 THEN
  29.   location=location+fragment*RIGHT(TIME('S'),2)/100
  30. ELSE IF fragment>100 THEN
  31.   location=location+fragment*RIGHT(TIME('S'),1)/10
  32. location=TRUNC(location)
  33. IF location>size THEN location=micros
  34.  
  35. x=OPEN(f,filename,'R')
  36. IF x=0 THEN RETURN(10);
  37. CALL SEEK(f,location,'B')            /* point to the random place */
  38. line=''
  39. DO WHILE line~=FF & ~EOF(f)        /* find the start (a formfeed) */
  40.   line=READLN(f)
  41. END
  42. count=0
  43. line=''
  44. IF ~EOF(f) THEN      /* if EOF then must be right at end. missed! */
  45.   DO WHILE line~=FF & ~EOF(f)         /* otherwise, show the page */
  46.     line=READLN(f)
  47.     IF ~EOF(f) & line~=FF THEN
  48.       DO
  49.         SAY line||CR
  50.         count=count+1
  51.       END
  52.   END
  53. BREAK_C:
  54. BREAK_E:
  55. CALL CLOSE(f)
  56. RETURN(count);
  57. EXIT;                           /* a little redundant, so sue me! */
  58.